home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / pcboard / ml110.zip / ML110.PPE (.txt) < prev   
PCBoard Programming Language Executable  |  1996-01-06  |  16KB  |  956 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Boolean  BOOLEAN010
  29.     Integer  INTEGER001
  30.     Integer  INTEGER002
  31.     Integer  INTEGER003
  32.     Integer  INTEGER004
  33.     Integer  INTEGER005
  34.     Integer  INTEGER006
  35.     Integer  INTEGER007
  36.     Integer  INTEGER008
  37.     Integer  INTEGER009
  38.     Integer  INTEGER010
  39.     Integer  INTEGER011
  40.     Integer  INTEGER012
  41.     Integer  INTEGER013
  42.     Integer  INTEGER014
  43.     Integer  INTEGER015
  44.     Integer  INTEGER016
  45.     Integer  INTEGER017
  46.     Integer  INTEGER018
  47.     Integer  INTEGER019
  48.     Integer  INTEGER020
  49.     Integer  INTEGER021
  50.     String   STRING001
  51.     String   STRING002
  52.     String   STRING003
  53.     String   STRING004
  54.     String   STRING005
  55.     String   STRING006
  56.     String   STRING007
  57.     String   STRING008
  58.     String   STRING009
  59.     String   STRING010
  60.     String   STRING011
  61.     String   STRING012
  62.     String   STRING013
  63.     String   STRING014
  64.     String   STRING015
  65.     String   TSTRING016(20)
  66.     String   TSTRING017(20)
  67.     String   STRING018
  68.     String   STRING019
  69.     String   STRING020
  70.     String   STRING021
  71.     String   STRING022
  72.     String   TSTRING023(20)
  73.     String   STRING024
  74.     String   STRING025
  75.     String   STRING026
  76.     String   STRING027
  77.     String   STRING028
  78.     String   STRING029
  79.     String   STRING030
  80.     String   STRING031
  81.     String   STRING032
  82.     Declare  Procedure PROC001()
  83.     Declare  Procedure PROC002()
  84.     Declare  Procedure PROC003()
  85.     Declare  Procedure PROC004()
  86.     Declare  Procedure PROC005()
  87.     Declare  Procedure PROC006()
  88.     Declare  Procedure PROC007()
  89.     Declare  Procedure PROC008()
  90.     Declare  Procedure PROC009()
  91.     Declare  Procedure PROC010()
  92.     Declare  Procedure PROC011()
  93.     Declare  Procedure PROC012()
  94.     Declare  Procedure PROC013()
  95.     Declare  Procedure PROC014()
  96.     Declare  Procedure PROC015()
  97.     Declare  Procedure PROC016()
  98.  
  99. ;------------------------------------------------------------------------------
  100.  
  101.     PROC016()
  102.     PROC009()
  103.     While (STRING004 <> "Q") Do
  104.         STRING012 = ""
  105.         STRING004 = ""
  106.         PROC005()
  107.         If (BOOLEAN001) PROC002()
  108.         PROC007()
  109.         If (STRING004 == "M") Then
  110.             PROC001()
  111.             Continue
  112.         Endif
  113.         If (STRING004 == "V") Then
  114.             PROC003()
  115.             Continue
  116.         Endif
  117.         If (STRING004 == "Q") Then
  118.             End
  119.             Continue
  120.         Endif
  121.         If (STRING004 == "?") Then
  122.             DispFile PPEPath() + "mainmenu.hlp", 0
  123.             Continue
  124.         Endif
  125.         PROC008()
  126.     EndWhile
  127.     End
  128.  
  129. ;------------------------------------------------------------------------------
  130.  
  131.     Procedure PROC001()
  132.  
  133.     While (STRING012 <> "Q") Do
  134.         STRING012 = ""
  135.         INTEGER006 = 1
  136.         Cls
  137.         PrintLn "@X01", STRING030
  138.         PrintLn "@X0B", STRING026, " Mailing List Manager"
  139.         PrintLn "@X01", STRING030
  140.         PrintLn "  @X0BV@X0F.@X03  View a Mailing List"
  141.         PrintLn "  @X0BE@X0F.@X03  Edit a Mailing List"
  142.         PrintLn "  @X0BD@X0F.@X03  Delete an Existing List"
  143.         PrintLn "  @X0BC@X0F.@X03  Create a New List"
  144.         PrintLn "  @X0BH@X0F.@X03  Help With These Options"
  145.         PrintLn "  @X0BQ@X0F.@X03  Quit the Mail Manager System"
  146.         PrintLn "@X01", STRING030
  147.         InputStr "List Manager Command", STRING012, 14, 1, "VEDCHQ?", 2 + 4 + 8 + 64
  148.         If (STRING012 == "V") Then
  149.             Cls
  150.             PROC006()
  151.             PROC002()
  152.             PrintLn "@X01", STRING030
  153.             PROC003()
  154.             Continue
  155.         Endif
  156.         If (STRING012 == "E") Then
  157.             Cls
  158.             PROC006()
  159.             PROC002()
  160.             PrintLn "@X01", STRING030
  161.             PROC004()
  162.             Continue
  163.         Endif
  164.         If (STRING012 == "D") Then
  165.             Cls
  166.             PROC006()
  167.             PROC002()
  168.             PrintLn "@X01", STRING030
  169.             PROC014()
  170.             Continue
  171.         Endif
  172.         If (STRING012 == "C") Then
  173.             Cls
  174.             PROC006()
  175.             PROC002()
  176.             PrintLn "@X01", STRING030
  177.             If (INTEGER021 >= INTEGER020) Then
  178.                 PrintLn 
  179.                 PrintLn "@X0BThis version of Mailing List supports a maximum"
  180.                 PrintLn "@X0Bof @X0C", INTEGER020, "@X0B mailing lists for each user."
  181.                 PrintLn 
  182.                 PROC010()
  183.  
  184.                 EndProc
  185.  
  186.             Endif
  187.             PROC015()
  188.             Continue
  189.         Endif
  190.         If (STRING012 == "H") Then
  191.             DispFile PPEPath() + "manager.hlp", 0
  192.             Continue
  193.         Endif
  194.         If (STRING012 == "?") Then
  195.             DispFile PPEPath() + "manager.hlp", 0
  196.         Endif
  197.     EndWhile
  198.  
  199.     EndProc
  200.  
  201.  
  202. ;------------------------------------------------------------------------------
  203.  
  204.     Procedure PROC002()
  205.  
  206.     INTEGER006 = 1
  207.     INTEGER021 = 0
  208.     FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 3
  209.     :LABEL001
  210.     If (Ferr(2)) Goto LABEL002
  211.     FGet 2, STRING002
  212.     If (Left(STRING002, 1) == "*") Then
  213.         STRING002 = Right(STRING002, Len(STRING002) - 1)
  214.         PrintLn "  @X0A", INTEGER006, ". @X0E", STRING002
  215.         INTEGER006 = INTEGER006 + 1
  216.         INTEGER021 = INTEGER021 + 1
  217.     Endif
  218.     Goto LABEL001
  219.     :LABEL002
  220.     FClose 2
  221.     INTEGER010 = INTEGER006 - 1
  222.  
  223.     EndProc
  224.  
  225.  
  226. ;------------------------------------------------------------------------------
  227.  
  228.     Procedure PROC004()
  229.  
  230.     STRING012 = ""
  231.     InputStr "Edit Which List", STRING012, 13, 1, "1234567890?", 2 + 4 + 8 + 64
  232.  
  233.     EndProc
  234.  
  235.  
  236.     EndProc
  237.  
  238.  
  239.     EndProc
  240.  
  241.     PROC011()
  242.     PROC012()
  243.  
  244.     EndProc
  245.  
  246.  
  247. ;------------------------------------------------------------------------------
  248.  
  249.     Procedure PROC003()
  250.  
  251.     PrintLn 
  252.     INTEGER006 = 0
  253.     STRING011 = ""
  254.     InputStr "View Which List", STRING011, 14, 1, "1234567890", 64 + 2 + 4
  255.     Cls
  256.     FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 3
  257.     :LABEL003
  258.     If (Ferr(2)) Goto LABEL004
  259.     FGet 2, STRING002
  260.     If (Left(STRING002, 1) == "*") Then
  261.         FGet 2, INTEGER009
  262.         INTEGER006 = INTEGER006 + 1
  263.         If (String(INTEGER006) == STRING011) Then
  264.             PrintLn "@X01──────────────────────────────────────────"
  265.             PrintLn "@X09 ", Right(STRING002, Len(STRING002) - 1)
  266.             PrintLn "@X01──────────────────────────────────────────"
  267.             For INTEGER007 = 1 To INTEGER009
  268.                 FGet 2, STRING008
  269.                 PrintLn "@X0E", INTEGER007, ". @X0B", STRING008
  270.             Next
  271.             PrintLn "@X01──────────────────────────────────────────"
  272.             Print "@X03Total of @X0B", INTEGER007 - 1
  273.             If (INTEGER007 - 1 > 1) PrintLn " @X03entries in this list."
  274.             If (INTEGER007 - 1 == 1) PrintLn " @X03entry in this list."
  275.             PrintLn 
  276.             PROC010()
  277.         Endif
  278.     Endif
  279.     Goto LABEL003
  280.     :LABEL004
  281.     FClose 2
  282.     STRING004 = ""
  283.  
  284.     EndProc
  285.  
  286.  
  287. ;------------------------------------------------------------------------------
  288.  
  289.     Procedure PROC005()
  290.  
  291.     Cls
  292.     PrintLn "@X01", STRING030
  293.     PrintLn "@X0B ", STRING026, " Mailing List Manager   @X08v1.10"
  294.     PrintLn "@X01", STRING030
  295.  
  296.     EndProc
  297.  
  298.  
  299. ;------------------------------------------------------------------------------
  300.  
  301.     Procedure PROC006()
  302.  
  303.     PrintLn 
  304.     PrintLn "@X01", STRING030
  305.     PrintLn "@X0B Currently Defined Mailing Lists"
  306.     PrintLn "@X01", STRING030
  307.  
  308.     EndProc
  309.  
  310.  
  311. ;------------------------------------------------------------------------------
  312.  
  313.     Procedure PROC007()
  314.  
  315.     STRING004 = ""
  316.     FClose 2
  317.     PrintLn "@X0E  M. @X02Manage Your Mailing List Database"
  318.     PrintLn "@X0E  ?. @X02Help With This Menu"
  319.     PrintLn "@X01", STRING030
  320.     PrintLn 
  321.     Print "@X0DList Commands: @X0B#@X0C:@X0A E-Mail List  @X0BV@X0C:@X0Aiew List  @X0BM@X0C:@X0Aanage Lists  @X0F(@X0B1@X0E-@X0B", INTEGER006 - 1, "@X0F,@X0BV,M,?@X0F)"
  322.     InputStr "", STRING004, 10, 1, "1234567890VMQ?", 64 + 2 + 4 + 8
  323.  
  324.     EndProc
  325.  
  326.  
  327. ;------------------------------------------------------------------------------
  328.  
  329.     Procedure PROC008()
  330.  
  331.     INTEGER006 = 0
  332.     BOOLEAN002 = 0
  333.     Delete STRING010
  334.     FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 3
  335.     While (!Ferr(2) && !BOOLEAN002) Do
  336.         FGet 2, STRING002
  337.         If ((Left(STRING002, 1) == "*") && !BOOLEAN002) Then
  338.             FGet 2, INTEGER009
  339.             INTEGER006 = INTEGER006 + 1
  340.             If (String(INTEGER006) == STRING004) Then
  341.                 INTEGER007 = 1
  342.                 FOpen 3, STRING010, 1, 3
  343.                 If (TokenStr() == "CMD") Then
  344.                     FPut 3, "E"
  345.                     FPut 3, Chr(13)
  346.                     FPut 3, "@LIST@"
  347.                     FPut 3, Chr(13)
  348.                 Endif
  349.                 For INTEGER007 = 1 To INTEGER009
  350.                     FGet 2, STRING008
  351.                     FPut 3, STRING008
  352.                     STRING008 = ""
  353.                     FPut 3, Chr(13)
  354.                 Next
  355.                 FClose 3
  356.                 BOOLEAN002 = 1
  357.             Endif
  358.         Endif
  359.     EndWhile
  360.     FClose 2
  361.     STRING009 = ""
  362.     KbdFile STRING010
  363.     End
  364.  
  365.     EndProc
  366.  
  367.  
  368. ;------------------------------------------------------------------------------
  369.  
  370.     Procedure PROC009()
  371.  
  372.     INTEGER012 = 5
  373.     If (BOOLEAN010) INTEGER012 = 20
  374.     INTEGER020 = 3
  375.     If (BOOLEAN010) INTEGER020 = 20
  376.     BOOLEAN001 = 0
  377.     STRING032 = "NORMAL"
  378.     For INTEGER007 = 1 To 20
  379.         TSTRING017(INTEGER007) = "@X05Active Entry"
  380.     Next
  381.     STRING010 = PPEPath() + "MAILIST." + PcbNode()
  382.     FOpen 2, PPEPath() + "listdata\userlist.dat", 0, 2
  383.     While (!Ferr(2) && (STRING001 <> U_Name())) Do
  384.         FGet 2, STRING001
  385.         FGet 2, STRING003
  386.         If (STRING001 == U_Name()) Then
  387.             BOOLEAN001 = 1
  388.             BOOLEAN009 = 0
  389.         Endif
  390.     EndWhile
  391.     FClose 2
  392.     If (BOOLEAN001) Goto LABEL006
  393.     BOOLEAN009 = 1
  394.     PrintLn "@X0EThere are currently no mailing lists in your private address book."
  395.     InputStr "Would you like to create one now", STRING012, 14, 1, "YN", 8 + 2 + 4 + 64
  396.     If (STRING012 == "N") End
  397.     STRING003 = String(CallNum()) + ".LST"
  398.     PROC015()
  399.     If (BOOLEAN009) Goto LABEL005
  400.     FAppend 2, PPEPath() + "listdata\userlist.dat", 1, 3
  401.     FPutLn 2, U_Name()
  402.     FPutLn 2, String(CallNum()) + ".LST"
  403.     FClose 2
  404.     :LABEL005
  405.     PROC009()
  406.     :LABEL006
  407.     If (BOOLEAN001) INTEGER006 = 1
  408.  
  409.     EndProc
  410.  
  411.  
  412. ;------------------------------------------------------------------------------
  413.  
  414.     Procedure PROC010()
  415.  
  416.     InputStr "Press Enter to Continue", STRING013, 10, 1, "", 32
  417.  
  418.     EndProc
  419.  
  420.  
  421. ;------------------------------------------------------------------------------
  422.  
  423.     Procedure PROC013()
  424.  
  425.     INTEGER015 = 0
  426.     PrintLn "@X01Updating..."
  427.     FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 2
  428.     FOpen 3, PPEPath() + "listdata\" + String(CallNum()) + ".$$$", 1, 0
  429.     :LABEL007
  430.     If (Ferr(2)) Goto LABEL008
  431.     FGet 2, STRING002
  432.     If (Left(STRING002, 1) == "*") Then
  433.         FPutLn 3, STRING002
  434.         INTEGER015 = INTEGER015 + 1
  435.         INTEGER007 = INTEGER007 + 1
  436.         If (String(INTEGER015) <> STRING020) Then
  437.             FGet 2, INTEGER013
  438.             FPutLn 3, INTEGER013
  439.             For INTEGER011 = 1 To INTEGER013
  440.                 FGet 2, STRING002
  441.                 FPutLn 3, STRING002
  442.             Next
  443.         Endif
  444.         If (String(INTEGER015) == STRING020) Then
  445.             FGet 2, INTEGER013
  446.             FPutLn 3, INTEGER016
  447.             For INTEGER011 = 1 To INTEGER013
  448.                 FGet 2, STRING002
  449.             Next
  450.             For INTEGER011 = 1 To 20
  451.                 If ((TSTRING016(INTEGER011) <> "") && (TSTRING017(INTEGER011) <> "@X07Marked for Deletion")) Then
  452.                     FPutLn 3, TSTRING016(INTEGER011)
  453.                 Endif
  454.             Next
  455.         Endif
  456.     Endif
  457.     Goto LABEL007
  458.     :LABEL008
  459.     FClose 2
  460.     FClose 3
  461.     STRING019 = PPEPath() + "listdata\" + String(CallNum()) + ".$$$"
  462.     STRING018 = PPEPath() + "listdata\" + STRING003
  463.     Delete STRING018
  464.     Rename STRING019, STRING018
  465.  
  466.     EndProc
  467.  
  468.  
  469. ;------------------------------------------------------------------------------
  470.  
  471.     Procedure PROC011()
  472.  
  473.     INTEGER007 = 0
  474.     STRING020 = STRING012
  475.     For INTEGER008 = 1 To 20
  476.         TSTRING016(INTEGER008) = ""
  477.         TSTRING017(INTEGER008) = "@X05Active Entry"
  478.     Next
  479.     If (STRING012 > String(INTEGER010)) Then
  480.         PrintLn 
  481.         InputStr "Invalid List Selected. Press Enter to Continue", STRING013, 10, 1, "", 32
  482.  
  483.         EndProc
  484.  
  485.     Else
  486.         FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 3
  487.         :LABEL009
  488.         If (Ferr(2)) Goto LABEL010
  489.         FGet 2, STRING002
  490.         If (Left(STRING002, 1) == "*") Then
  491.             INTEGER007 = INTEGER007 + 1
  492.             If (String(INTEGER007) == STRING012) Then
  493.                 FGet 2, INTEGER009
  494.                 INTEGER016 = INTEGER009
  495.                 For INTEGER008 = 1 To INTEGER009
  496.                     FGet 2, TSTRING016(INTEGER008)
  497.                 Next
  498.             Endif
  499.         Endif
  500.         Goto LABEL009
  501.     Endif
  502.     :LABEL010
  503.     FClose 2
  504.  
  505.     EndProc
  506.  
  507.  
  508. ;------------------------------------------------------------------------------
  509.  
  510.     Procedure PROC012()
  511.  
  512.     BOOLEAN003 = 0
  513.     INTEGER014 = INTEGER009
  514.     INTEGER004 = INTEGER009
  515.     INTEGER016 = INTEGER009
  516.     BOOLEAN005 = 1
  517.     STRING005 = ""
  518.     STRING012 = ""
  519.     BOOLEAN006 = 0
  520.     While (STRING005 <> "Q") Do
  521.         Cls
  522.         PrintLn "@X01──────────────────────────────────────────────────────────────────────────────"
  523.         PrintLn "@X0B ", STRING026, " Mailing List Database Manager"
  524.         PrintLn "@X01──────────────────────────────────────────────────────────────────────────────"
  525.         PrintLn "listpntr=", INTEGER014
  526.         For INTEGER008 = 1 To INTEGER014
  527.             If (INTEGER008 < 10) Print "@X0A  ", INTEGER008, "@X0E. "
  528.             If (INTEGER008 > 9) Print "@X0A ", INTEGER008, "@X0E. "
  529.             Print "@X0B", TSTRING016(INTEGER008)
  530.             STRING007 = ""
  531.             For INTEGER011 = 1 To 40 - Len(TSTRING016(INTEGER008))
  532.                 STRING007 = STRING007 + " "
  533.             Next
  534.             Print STRING007
  535.             PrintLn TSTRING017(INTEGER008)
  536.         Next
  537.         PrintLn "@X01──────────────────────────────────────────────────────────────────────────────"
  538.         Print "@X0DEdit@X09: @X0BD@X0C:@X0Aelete an Entry   @X0BA@X0C:@X0Add an Entry   @X0BQ@X0C:@X0Auit the Editor  @X0E(@X0BD,A,Q@X0E)"
  539.         STRING005 = ""
  540.         InputStr "", STRING005, 10, 1, "DAQ", 64 + 2 + 4 + 8
  541.         If (STRING005 == "D") Then
  542.             STRING014 = ""
  543.             InputStr "Delete Which Entry ('Q' to Quit)", STRING014, 14, 2, "1234567890Q", 64 + 2 + 4 + 8
  544.             If (((Len(STRING014) > 0) && (ToInt(STRING014) <= INTEGER009)) && (ToInt(STRING014) > 0)) Then
  545.                 Print "@X0BDelete @X0F", TSTRING016(ToInt(STRING014)), " @X0Bfrom your database"
  546.                 InputStr "", STRING006, 11, 1, "YN", 64 + 2 + 4 + 8
  547.                 If (STRING006 == "Y") Then
  548.                     TSTRING017(ToInt(STRING014)) = "@X07Marked for Deletion"
  549.                     INTEGER016 = INTEGER016 - 1
  550.                     INTEGER004 = INTEGER004 - 1
  551.                 Endif
  552.                 BOOLEAN003 = 1
  553.             Endif
  554.             Continue
  555.         Endif
  556.         If (STRING005 == "A") Then
  557.             If (INTEGER016 < 0) INTEGER016 = 0
  558.             BOOLEAN005 = 1
  559.             BOOLEAN003 = 1
  560.             BOOLEAN004 = 0
  561.             STRING015 = ""
  562.             If (INTEGER004 >= INTEGER012) Then
  563.                 PrintLn 
  564.                 PrintLn "@X0BThis version of Mailing List supports a maximum"
  565.                 PrintLn "@X0Bof @X0C", INTEGER012, "@X0B entries in each mailing list."
  566.                 PrintLn 
  567.                 PROC010()
  568.                 PrintLn 
  569.                 STRING012 = ""
  570.                 If (BOOLEAN006) Then
  571.                     InputStr "Save your list modifications", STRING012, 14, 1, "YN", 2 + 8 + 64 + 4
  572.                     If (STRING012 == "Y") Then
  573.                         PROC013()
  574.                         Goto LABEL011
  575.                     Endif
  576.                     TSTRING016(INTEGER019) = ""
  577.                     INTEGER014 = INTEGER019 - 1
  578.                 Endif
  579.                 :LABEL011
  580.  
  581.                 EndProc
  582.  
  583.             Endif
  584.             If (BOOLEAN005) InputStr "Enter the Complete Name to Add", STRING015, 14, 40, Mask_Ascii() , 2 + 4 + 64 + 8
  585.  
  586.             EndProc
  587.  
  588.             INTEGER011 = U_RecNum(Upper(STRING015))
  589.             If ((INTEGER011 < 0) && (STRING015 <> "")) Then
  590.                 STRING032 = "INTERNET"
  591.                 PrintLn 
  592.                 PrintLn "@X03The username you have entered cannot be found in the system's user"
  593.                 PrintLn "@X03file.  If the username you have entered is an Internet address, or"
  594.                 PrintLn "@X03contains other such  routing  information,  you  may  proceed with"
  595.                 PrintLn "@X03adding it to your database.  If it is intended to be a local user,"
  596.                 PrintLn "@X03please check the spelling of the name, and try again."
  597.                 PrintLn 
  598.                 Print "@X0DUnknown User@X09: @X0BA@X0C:@X0Add this Name   @X0BR@X0C:@X0Aeenter this Name"
  599.                 InputStr "", STRING031, 10, 1, "AR", 2 + 4 + 64 + 8
  600.                 If (STRING031 == "R") Then
  601.                     TSTRING023(INTEGER015) = ""
  602.                     STRING015 = ""
  603.                     BOOLEAN005 = 0
  604.                     Goto LABEL017
  605.                 Endif
  606.                 If (STRING031 == "A") Then
  607.                     BOOLEAN005 = 1
  608.                 Endif
  609.             Endif
  610.             For INTEGER008 = 1 To INTEGER014
  611.                 If ((STRING015 == TSTRING016(INTEGER008)) && (TSTRING017(INTEGER008) <> "@X07Marked for Deletion")) Then
  612.                     BOOLEAN004 = 1
  613.                 Endif
  614.             Next
  615.             If (INTEGER014 > INTEGER012) Then
  616.                 InputStr "This list is full. Press Enter", STRING012, 12, 1, "", 32
  617.                 BOOLEAN005 = 0
  618.                 STRING012 = ""
  619.             Endif
  620.             If (BOOLEAN004) Then
  621.                 Print "@X0C", STRING015
  622.                 InputStr " Already Exists in Your Database. Press Enter", STRING012, 4, 1, "", 32
  623.                 STRING012 = ""
  624.                 BOOLEAN005 = 0
  625.             Endif
  626.             If (BOOLEAN005) Then
  627.                 For INTEGER008 = 1 To INTEGER016 + 1
  628.                     If (TSTRING016(INTEGER008) == "") Then
  629.                         INTEGER019 = INTEGER008
  630.                         If (BOOLEAN006) Continue
  631.                         BOOLEAN003 = 1
  632.                         If (STRING032 == "INTERNET") STRING015 = Lower(STRING015)
  633.                         TSTRING016(INTEGER008) = STRING015
  634.                         TSTRING017(INTEGER008) = "New Entry"
  635.                         INTEGER016 = INTEGER016 + 1
  636.                         INTEGER004 = INTEGER004 + 1
  637.                         If (TSTRING017(INTEGER008) <> "@X07Marked for Deletion") INTEGER014 = INTEGER014 + 1
  638.                         BOOLEAN006 = 1
  639.                     Endif
  640.                 Next
  641.             Endif
  642.             Continue
  643.         Endif
  644.         If (STRING005 == "Q") Then
  645.             If (BOOLEAN003 == 1) Then
  646.                 PrintLn 
  647.                 STRING012 = ""
  648.                 InputStr "Save your list modifications", STRING012, 14, 1, "YN", 2 + 8 + 64 + 4
  649.                 If (STRING012 == "Y") Then
  650.                     PROC013()
  651.                     Continue
  652.                 Endif
  653.                 TSTRING016(INTEGER019) = ""
  654.                 INTEGER014 = INTEGER019 - 1
  655.             Endif
  656.         Endif
  657.     EndWhile
  658.  
  659.     EndProc
  660.  
  661.  
  662. ;------------------------------------------------------------------------------
  663.  
  664.     Procedure PROC014()
  665.  
  666.     INTEGER015 = 0
  667.     STRING012 = ""
  668.     STRING019 = PPEPath() + "listdata\" + String(CallNum()) + ".$$$"
  669.     STRING018 = PPEPath() + "listdata\" + STRING003
  670.     Delete STRING019
  671.     InputStr "Delete Which List", STRING012, 13, 1, "1234567890?", 2 + 4 + 8 + 64
  672.  
  673.     EndProc
  674.  
  675.     FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 3
  676.     :LABEL012
  677.     If (Ferr(2)) Goto LABEL013
  678.     FGet 2, STRING002
  679.     If (Left(STRING002, 1) == "*") Then
  680.         INTEGER015 = INTEGER015 + 1
  681.         If (String(INTEGER015) == STRING012) Then
  682.             STRING021 = Right(STRING002, Len(STRING002) - 1)
  683.         Endif
  684.     Endif
  685.     Goto LABEL012
  686.     :LABEL013
  687.     FClose 2
  688.  
  689.     EndProc
  690.  
  691.  
  692.     EndProc
  693.  
  694.     Print "@X0ADelete @X0E", STRING021
  695.     STRING012 = ""
  696.     InputStr " from your database", STRING012, 10, 1, "YN", 2 + 4 + 8 + 64
  697.     If (STRING012 == "Y") Then
  698.         STRING012 = ""
  699.         InputStr "Are You Sure", STRING012, 14, 1, "YN", 2 + 4 + 8 + 64
  700.     Endif
  701.     If (STRING012 == "Y") Then
  702.         INTEGER015 = 0
  703.         PrintLn "@X01Updating..."
  704.         FOpen 2, PPEPath() + "listdata\" + STRING003, 0, 2
  705.         FOpen 3, PPEPath() + "listdata\" + String(CallNum()) + ".$$$", 1, 0
  706.         :LABEL014
  707.         If (Ferr(2)) Goto LABEL015
  708.         FGet 2, STRING002
  709.         BOOLEAN007 = 0
  710.         If (Left(STRING002, 1) == "*") Then
  711.             STRING022 = Right(STRING002, Len(STRING002) - 1)
  712.             If (STRING022 == STRING021) Then
  713.                 BOOLEAN007 = 1
  714.                 FGet 2, INTEGER013
  715.                 For INTEGER011 = 1 To INTEGER013
  716.                     FGet 2, STRING002
  717.                 Next
  718.             Endif
  719.             If (STRING022 <> STRING021) Then
  720.                 FPutLn 3, STRING002
  721.                 FGet 2, INTEGER013
  722.                 FPutLn 3, INTEGER013
  723.                 For INTEGER011 = 1 To INTEGER013
  724.                     FGet 2, STRING009
  725.                     FPutLn 3, STRING009
  726.                 Next
  727.             Endif
  728.         Endif
  729.         Goto LABEL014
  730.         :LABEL015
  731.         FClose 2
  732.         FClose 3
  733.         Delete STRING018
  734.         Rename STRING019, STRING018
  735.     Endif
  736.  
  737.     EndProc
  738.  
  739.  
  740. ;------------------------------------------------------------------------------
  741.  
  742.     Procedure PROC015()
  743.  
  744.     STRING012 = ""
  745.     STRING024 = ""
  746.     INTEGER018 = 0
  747.     INTEGER015 = 1
  748.     BOOLEAN008 = 0
  749.     For INTEGER011 = 1 To INTEGER012
  750.         TSTRING023(INTEGER011) = ""
  751.     Next
  752.     PrintLn 
  753.     If (!BOOLEAN009) PrintLn "@X0AThe above lists are currently defined in your mailing list database."
  754.     InputStr "Do you wish to add a new list now", STRING012, 10, 1, "YN", 8 + 2 + 4 + 64
  755.     Select Case (STRING012)
  756.         Case "Y"
  757.             Cls
  758.             PrintLn "@X01──────────────────────────────────────────"
  759.             PrintLn "@X0B Generate New Mailing List"
  760.             PrintLn "@X01──────────────────────────────────────────"
  761.             PrintLn 
  762.             InputStr "Mailing List Name", STRING024, 10, 40, Mask_Ascii(), 2 + 4 + 64
  763.  
  764.             EndProc
  765.  
  766.             PrintLn 
  767.             PrintLn "@X07Enter the names of the users to be included in this list below."
  768.             PrintLn "@X07Entering a blank line will end your data input."
  769.             PrintLn 
  770.             :LABEL016
  771.             If (BOOLEAN008) Goto LABEL018
  772.             :LABEL017
  773.             STRING032 = "NORMAL"
  774.             InputStr "User Name", TSTRING023(INTEGER015), 11, 40, Mask_Ascii(), 2 + 4 + 32 + 8
  775.             INTEGER011 = U_RecNum(Upper(TSTRING023(INTEGER015)))
  776.             If ((INTEGER011 < 0) && (TSTRING023(INTEGER015) <> "")) Then
  777.                 STRING032 = "INTERNET"
  778.                 PrintLn 
  779.                 PrintLn "@X03The username you have entered cannot be found in the system's user"
  780.                 PrintLn "@X03file.  If the username you have entered is an Internet address, or"
  781.                 PrintLn "@X03contains other such  routing  information,  you  may  proceed with"
  782.                 PrintLn "@X03adding it to your database.  If it is intended to be a local user,"
  783.                 PrintLn "@X03please check the spelling of the name, and try again."
  784.                 PrintLn 
  785.                 Print "@X0DUnknown User@X09: @X0BA@X0C:@X0Add this Name   @X0BR@X0C:@X0Aeenter this Name"
  786.                 STRING031 = ""
  787.                 InputStr "", STRING031, 10, 1, "AR", 2 + 4 + 64 + 8
  788.                 If (STRING031 == "R") Then
  789.                     TSTRING023(INTEGER015) = ""
  790.                     Goto LABEL017
  791.                 Endif
  792.             Endif
  793.             If (TSTRING023(INTEGER015) == "") Then
  794.                 BOOLEAN008 = 1
  795.             Endif
  796.             For INTEGER017 = 1 To INTEGER015 - 1
  797.                 If (TSTRING023(INTEGER017) == TSTRING023(INTEGER015)) Then
  798.                     InputStr "Name Already in List. Please Reenter", STRING012, 14, 1, "", 32
  799.                     TSTRING023(INTEGER015) = ""
  800.                     Goto LABEL017
  801.                 Endif
  802.             Next
  803.             PrintLn "          @X0D> @X03", TSTRING023(INTEGER015)
  804.             If (TSTRING023(INTEGER015) <> "") INTEGER018 = INTEGER018 + 1
  805.             If (STRING032 == "INTERNET") TSTRING023(INTEGER015) = Lower(TSTRING023(INTEGER015))
  806.             INTEGER015 = INTEGER015 + 1
  807.             Goto LABEL016
  808.             :LABEL018
  809.             Cls
  810.             If (TSTRING023(1) == "") Goto LABEL019
  811.             PrintLn "@X01──────────────────────────────────────────"
  812.             PrintLn "@X0B", STRING024, " - New Entries  "
  813.             PrintLn "@X01──────────────────────────────────────────"
  814.             PrintLn 
  815.             For INTEGER011 = 1 To INTEGER018
  816.                 If (TSTRING023(INTEGER011) <> "") PrintLn "@X0D", INTEGER011, "@X05. ", TSTRING023(INTEGER011)
  817.             Next
  818.             PrintLn "@X01──────────────────────────────────────────"
  819.             STRING012 = "S"
  820.             InputStr "Enter 'S' to Save, 'A' to Abort", STRING012, 14, 1, "SA", 8 + 2 + 4 + 64
  821.             If (STRING012 == "S") Then
  822.                 PrintLn "@X07Updating..."
  823.                 FAppend 2, PPEPath() + "listdata\" + STRING003, 1, 3
  824.                 STRING024 = "*" + STRING024
  825.                 FPutLn 2, STRING024
  826.                 FPutLn 2, INTEGER018
  827.                 For INTEGER011 = 1 To INTEGER015
  828.                     If (TSTRING023(INTEGER011) <> "") FPutLn 2, TSTRING023(INTEGER011)
  829.                 Next
  830.                 FClose 2
  831.                 BOOLEAN009 = 0
  832.                 Goto LABEL019
  833.             Endif
  834.         Case "A"
  835.             STRING012 = ""
  836.             InputStr "Are you sure you want to discard this list", STRING012, 14, 1, "YN", 8 + 2 + 64 + 4
  837.             If (STRING012 == "Y") Goto LABEL019
  838.     End Select
  839.     :LABEL019
  840.     For INTEGER011 = 1 To 20
  841.         TSTRING023(INTEGER011) = ""
  842.     Next
  843.     STRING012 = ""
  844.  
  845.     EndProc
  846.  
  847.  
  848. ;------------------------------------------------------------------------------
  849.  
  850.     Procedure PROC016()
  851.  
  852.     BOOLEAN010 = 1
  853.     FOpen 5, PPEPath() + "maillist.cfg", 0, 3
  854.     FGet 5, STRING025
  855.     FGet 5, STRING026
  856.     FGet 5, STRING028
  857.     For INTEGER011 = 1 To Len(STRING025)
  858.         STRING027 = Mid(STRING025, INTEGER011, 1)
  859.         INTEGER001 = Asc(STRING027)
  860.         INTEGER002 = INTEGER002 + INTEGER001
  861.     Next
  862.     For INTEGER011 = 1 To Len(STRING026)
  863.         STRING027 = Mid(STRING026, INTEGER011, 1)
  864.         INTEGER001 = Asc(STRING027)
  865.         INTEGER003 = INTEGER003 + INTEGER001
  866.     Next
  867.     STRING029 = String((INTEGER002 * Len(Strip(STRING025, " "))) * 9)
  868.     STRING029 = STRING029 + String((INTEGER003 * Len(Strip(STRING026, " "))) * 9)
  869.     If (STRING029 == STRING028) BOOLEAN010 = 1
  870.     INTEGER005 = Len(STRING026)
  871.     INTEGER005 = INTEGER005 + 30
  872.     For INTEGER011 = 1 To INTEGER005
  873.         STRING030 = STRING030 + "─"
  874.     Next
  875.  
  876.     EndProc
  877.  
  878.  
  879. ;------------------------------------------------------------------------------
  880. ;
  881. ; Usage report (before postprocessing)
  882. ;
  883. ; ■ Statements used :
  884. ;
  885. ;    4       End
  886. ;    10      Cls
  887. ;    148     Goto 
  888. ;    185     Let 
  889. ;    12      Print 
  890. ;    87      PrintLn 
  891. ;    123     If 
  892. ;    3       DispFile 
  893. ;    12      FOpen 
  894. ;    2       FAppend 
  895. ;    14      FClose 
  896. ;    26      FGet 
  897. ;    6       FPut 
  898. ;    13      FPutLn 
  899. ;    4       Delete 
  900. ;    26      InputStr 
  901. ;    1       KbdFile 
  902. ;    2       Rename 
  903. ;    27      EndProc
  904. ;
  905. ;
  906. ; ■ Functions used :
  907. ;
  908. ;    4       *
  909. ;    147     +
  910. ;    17      -
  911. ;    56      ==
  912. ;    15      <>
  913. ;    27      <
  914. ;    23      <=
  915. ;    8       >
  916. ;    46      >=
  917. ;    99      !
  918. ;    53      &&
  919. ;    22      ||
  920. ;    14      Len(
  921. ;    2       Lower()
  922. ;    2       Upper()
  923. ;    2       Mid()
  924. ;    7       Left()
  925. ;    4       Right()
  926. ;    8       Ferr()
  927. ;    3       Chr()
  928. ;    2       Asc()
  929. ;    3       U_Name()
  930. ;    2       Strip()
  931. ;    15      String()
  932. ;    3       Mask_Ascii()
  933. ;    21      PPEPath()
  934. ;    1       PcbNode()
  935. ;    1       TokenStr()
  936. ;    6       CallNum()
  937. ;    2       U_RecNum()
  938. ;    7       ToInt()
  939. ;
  940. ;------------------------------------------------------------------------------
  941. ;
  942. ; Analysis flags : No flag
  943. ;
  944. ;------------------------------------------------------------------------------
  945. ;
  946. ; Postprocessing report
  947. ;
  948. ;    22      For/Next
  949. ;    5       While/EndWhile
  950. ;    55      If/Then or If/Then/Else
  951. ;    1       Select Case
  952. ;
  953. ;------------------------------------------------------------------------------
  954. ;                 AEGiS Corp - Break the routines, code against the machines!
  955. ;------------------------------------------------------------------------------
  956.